home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 011-020 / amok13 / compcontrol / getconfig.mod < prev    next >
Text File  |  1993-11-04  |  5KB  |  203 lines

  1. (******************************************************************************)
  2. (*
  3.         PROGRAMMNAME :  GetConfig.mod
  4.         VERSION      :  0.01
  5.         
  6.         AUTOR  :        Ralf Kaiser
  7.                         Winckelmannstraße 1
  8.                         5600 Wuppertal 2
  9.                         
  10.         Start  :        11.01.89
  11.         Update :        13.01.89
  12.         Ende   :        21.01.89
  13.  
  14. Dieser Programmteil liest die Konfigurationsdatei für das Programm
  15. CompControl. Sie enthält die Namen von Editor, Compiler und Linker,
  16. sowie die Endungen der zu bearbeitenden Files. 
  17. Die gelesenen Daten werden überprüft und in Form eines RECORDS an das 
  18. Hauptprogramm weitergeleitet.
  19. Die Konfigurationsdatei hat den Namen "CC.config". Sie befindet sich
  20. entweder in dem Verzeichnis, das bei Aufruf von CompControl aktuell
  21. war oder in DEVS:.
  22. Wird CC.config nicht gefunden, werden die Namen der einzelnen Programme
  23. mit Standardwerten belegt.
  24. Das Format der Konfigurationsdatei :
  25.  
  26. Die Reihenfolge der einzelnen Elemente ist festgelegt. Für den Compiler
  27. können 2 verschiedene Programme eingesetzt werden, damit man an Stelle
  28. des zweiten Compilers z.B. einen Assembler starten kann.
  29.  
  30. Die Komponenten :
  31.  
  32. Name des Editors           (z.B. "C:M2EMACS ")
  33. Name 1. Compiler           (z.B. "C:M2C -d ")
  34. Endung 1. Compiler         (z.B. ".MOD" )
  35. Name 2. Compiler           (z.B. "C:M2C -d -q ")
  36. Endung 2. Compiler         (z.B. ".DEF ")
  37. Name Linker                (z.B. "C:M2L -x ")
  38. Endung Linker              (z.B. ".OBJ ")
  39.  
  40. Beispiel 1 :
  41.  
  42. C:M2EMACS     - Editor       : M2Emacs im C-Dir (immer vollen Pfad angeben !)
  43. C:M2C -d      - Übersetzer 1 : M2c              (Optionen mit angeben !)
  44. .MOD          - Endung für Übersetzer 1 : .MOD
  45. C:M2C -d      - Übersetzer 2 : Wieder M2c
  46. .DEF          - Endung für Übersetzer 2 : .DEF  (so kann manauch
  47.                                                  Definitionsmoduln bearbeiten)
  48. C:M2L         - Linker       : M2l
  49. .OBJ          - Endung für den Linker   : .OBJ
  50.  
  51. Diese Datei wäre für Modula-2 Programmierer geeignet.
  52. Die Kommentare gehören nicht zur Datei !!!
  53.  
  54. Beispiel 2
  55.  
  56. C:ED
  57. C:CC
  58. .C
  59. C:AS
  60. .ASM
  61. C:BLINK
  62. .OBJ
  63.  
  64. Diese Datei könnten C-Programmierer (hier Atztec-C) gebrauchen.
  65. Hier wird dann, anstatt den Compiler mit einer anderen Endung zu starten,
  66. ein Assembler aufgerufen.
  67.  
  68. *)
  69. (******************************************************************************)
  70.  
  71. IMPLEMENTATION MODULE GetConfig;
  72.  
  73. FROM SYSTEM IMPORT
  74.  ADR;
  75.  
  76. FROM FileSystem IMPORT
  77.  Response, File, Lookup, Close, ReadByteBlock;
  78.  
  79. FROM Strings IMPORT
  80.  Delete, Copy, Insert, first, last;
  81.  
  82.   
  83. CONST
  84.  
  85.      DEFEDITOR         =          "C:M2EMACS ";
  86.      DEFCOMP1          =          "C:M2C -d ";
  87.      DEFEND1           =          ".MOD";
  88.      DEFCOMP2          =          "C:M2C ";
  89.      DEFEND2           =          ".DEF";
  90.      DEFLINK           =          "C:M2L ";
  91.      DEFOBJ            =          ".OBJ";        (* Defaultwerte *)
  92.  
  93.      CONFDAT1          =          "CC.config";
  94.      CONFDAT2          =          "DEVS:CC.config";
  95.           
  96. VAR     Konfig:      CCCONFIG;
  97.         Datei:       File;
  98.         Char:        ARRAY [0..0 ] OF CHAR;
  99.         ZKette:      ARRAY [0..80] OF CHAR;
  100.         OK:          BOOLEAN;
  101.         len:         INTEGER;        
  102.         
  103. PROCEDURE MakeDefaultConf (VAR Konfig: CCCONFIG);
  104.  
  105. BEGIN
  106.  
  107. WITH Konfig DO
  108.  
  109.  Editor := DEFEDITOR;
  110.  Comp1  := DEFCOMP1;
  111.  End1   := DEFEND1;
  112.  Comp2  := DEFCOMP2;
  113.  End2   := DEFEND2;
  114.  Link   := DEFLINK;
  115.  Obj    := DEFOBJ;
  116.  
  117. END;
  118.  
  119. END MakeDefaultConf;
  120.  
  121.  
  122. PROCEDURE OpenConfig (VAR Datei: File; VAR found: BOOLEAN);
  123.  
  124. BEGIN
  125.  
  126. found := FALSE;
  127. Lookup (Datei, CONFDAT1, 0, FALSE);
  128. IF (Datei.res = done) THEN
  129.  found := TRUE;
  130. ELSE
  131.  Lookup (Datei, CONFDAT2, 0, FALSE);
  132.  IF (Datei.res = done) THEN
  133.   found := TRUE;
  134.  END;
  135. END;
  136.  
  137. END OpenConfig;
  138.  
  139.  
  140. PROCEDURE ReadToCR (VAR Datei : File; 
  141.                     VAR ZKette : ARRAY OF CHAR; VAR len : INTEGER);
  142.  
  143. BEGIN
  144. len := 0;
  145. Delete (ZKette, 0, HIGH (ZKette));
  146.  
  147. REPEAT
  148.  ReadByteBlock (Datei, Char[0]);
  149.  IF (Char[0] # CHR (10)) THEN
  150.   Insert (ZKette, last, Char);
  151.   INC (len);
  152.   END;
  153. UNTIL (Char[0] = CHR (10));
  154.  
  155. END ReadToCR;
  156.  
  157.  
  158. PROCEDURE ConfigLesen (VAR Konfig: CCCONFIG);
  159.  
  160. BEGIN
  161.  
  162. OpenConfig (Datei, OK);
  163. IF (OK = FALSE) THEN
  164.  MakeDefaultConf (Konfig);
  165. ELSE
  166.  
  167.  WITH Konfig DO
  168.  
  169.   ReadToCR (Datei, ZKette, len);
  170.   Copy (Editor, ZKette, 0, len);
  171.   
  172.   ReadToCR (Datei, ZKette, len);
  173.   Copy (Comp1, ZKette, 0, len);
  174.   
  175.   ReadToCR (Datei, ZKette, len);
  176.   Copy (End1, ZKette, 0, len);
  177.   
  178.   ReadToCR (Datei, ZKette, len);
  179.   Copy (Comp2, ZKette, 0, len);
  180.   
  181.   ReadToCR (Datei, ZKette, len);
  182.   Copy (End2, ZKette, 0, len);
  183.   
  184.   ReadToCR (Datei, ZKette, len);
  185.   Copy (Link, ZKette, 0, len);
  186.   
  187.   ReadToCR (Datei, ZKette, len);
  188.   Copy (Obj, ZKette, 0, len);
  189.   
  190.   Close (Datei);
  191.   
  192.  END;
  193. END;
  194.  
  195. END ConfigLesen;
  196.  
  197.  
  198.  
  199. BEGIN
  200.  
  201. END GetConfig.
  202.  
  203.